var Rx = require('rxjs/Rx');
const fs = require('fs');
// Rx.Observable.of(1,2,3); // 等等

// var myObservable = new Rx.Subject();
// myObservable.subscribe(value => console.log(value));
// myObservable.next('foo');

// let firstObservable = Rx.Observable.of('one', 'two');
// firstObservable.subscribe((a) => {
//     console.log(a)
// })

// firstObservable.subscribe((a) => {
//     console.log(a+'-222')
// })

// let secondObservable = new Rx.Observable((data) => {
//     let a = 0;
//     //模拟异步请求
//     let iter = setInterval(() => {
//         data.next(a)
//         a += 1
//         if (a === 3) {
//             clearInterval(iter);
//             data.error(new Error('-----test-err----')); //TODO 抛出错误虽然会被拦截到，但没处理，进程会停止，需要查下处理方案
//             return;
//             // throw new Error('test---error---');
//         }
//         if (a === 10) {
//             clearInterval(iter);
//             data.complete();
//         }
//     }, 1000)
// });
// console.log('just before subscribe');
// secondObservable.subscribe((a) => {
//     console.log(a + '-observe subscribe')
// });
// secondObservable.subscribe({
//     next: x => console.log('got value ' + x),
//     error: err => console.error('something wrong occurred: ' + err),
//     complete: () => console.log('done'),
// });
// console.log('just after subscribe');

// setTimeout(() => {
//     console.log('---timeout----');
// }, 1000 * 10);

// var myObservable = new Rx.Observable(observer => {
//     observer.next('foo');
//     setTimeout(() => observer.next('bar'), 1000);
// });
// myObservable.subscribe(value => console.log(value));

// var readFile = Rx.Observable.bindNodeCallback(fs.readFile);
// readFile('README.md').subscribe((data) => console.log('readFile is ', data.toString()));

// var foo = new Rx.Observable(function (observer) {
//     console.log('Hello');
//     observer.next(42);
// });

// console.log('before');
// foo.subscribe(function (x) {
//     console.log(x);
// });
// console.log('after');

//   foo.subscribe(function (y) {
//     console.log(y);
//   });

// var observable1 = Rx.Observable.interval(400);
// var observable2 = Rx.Observable.interval(300);

// var subscription = observable1.subscribe(x => console.log('first: ' + x));
// var childSubscription = observable2.subscribe(x => console.log('second: ' + x));

// subscription.add(childSubscription);

// setTimeout(() => {
//   // subscription 和 childSubscription 都会取消订阅
//   subscription.unsubscribe();
// }, 1000);

var subject = new Rx.Subject();

subject.subscribe({
  next: (v) => console.log('observerA: ' + v)
});
subject.subscribe({
  next: (v) => console.log('observerB: ' + v)
});

subject.next(1);
subject.next(2);

